.\".so aufs.tmac
.
.eo
.de TQ
.br
.ns
.TP \$1
..
.de Bu
.IP \(bu 4
..
.ec
.\" end of macro definitions
.
.\" ----------------------------------------------------------------------
.TH AUMVDOWN 8 "aufs3.9 and later" Linux "Linux Aufs User's Manual"
.SH NAME
aumvdown \- moves-down a file between aufs branches

.\" ----------------------------------------------------------------------
.SH SYNOPSIS
.SY aumvdown
.OP options
.RI file_in_aufs
.IR .\|.\|.
.YS

.\" ----------------------------------------------------------------------
.SH DESCRIPTION
"aumvdown" command finds the first branch where the given file exists,
copies it to the next lower writable branch, and then removes the file
on the first branch.

There are several conditions to achieve the operation.
.RS
.Bu
It is obvious that when the file exists between the first and the next
lower writable branches, or hidden by the whiteout or directory's
opaque-ness, then the operation will fail. Because it breaks
the consistency in aufs world.
.Bu
If a "opaque"-ed directory exists in the ancestors of the file and it
would hide the moved-down file, then the operation will fail.

Similary if a whiteout (in effect) exists on any branch betwee source
and destination branch and it would hide  the moved-down file,
then the operation will fail too.
Note that the whiteout on "=ro" branch is not in effect, but "=ro+wh"
branch.
.Bu
Files in use (both in aufs world and in branch filesystem) are not be
handled.
.Bu
Hard-linked files are not be handled.
For such file, remount aufs or use \fBauplink\fP(8) or \fBaubrsync\fP(8).
.Bu
Removed files are not be handled since it has no name.
.Bu
Directories are not be handled since the action doesn't behave
recursively and the moving-down an empty dir has less meaning.
.RE

.\" ----------------------------------------------------------------------
.SH OPTIONS
.
.TP
.B \-b | \-\-lower\-branch\-id
.B \-B | \-\-upper\-branch\-id
Specify the source/target branch by its id.
You can obtain the branch id via sysfs.
.
.TP
.B \-i | \-\-interactive
Prompt to the user for every given file.
.
.TP
.B \-k | \-\-keep\-upper
Don't unlink the upper source file after copying-down.
.
.TP
.B \-o | \-\-overwrite\-lower
Overwrite the lower target file if it exists.
.
.TP
.B \-r | \-\-allow\-ro\-lower
Do the operation even if the lower branch is marked as readonly in aufs
world ("=ro"). Note that the natively readonly filesystems (mounted with
"\-o ro") are not operatable still even if you specify this option.
.
.TP
.B \-R | \-\-allow\-ro\-upper
Do the operation even if the upper branch is marked as readonly in aufs
world ("=ro"). Note that the natively readonly filesystems (mounted with
"\-o ro") are not operatable still even if you specify this option.
.
.TP
.B \-v | \-\-verbose
Make it verbose particularly for the error cases.
.
.TP
.B \-h | \-\-help
Shows the command syntax.
.\" .
.\" .TP
.\" .B \-V | \-\-version

.\" ----------------------------------------------------------------------
.SH SEE ALSO
.\" \fBaubrsync\fP(8)
\fBaufs\fP(5)

.SH COPYRIGHT
Copyright \(co 2011\-2015 Junjiro R. Okajima

.SH AUTHOR
Junjiro R. Okajima
